﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
using Montana.DAC;
using System.Data.OleDb;
using System.Data;

namespace Montana.Entidades
{
    public class Localidad : Datos<Localidad>
    {
        public string CP { get; set; }
        public int IDProvincia { get; set; }
        public string Provincia { get; set; }

        public Localidad()
        {
        }

        public Localidad(string nombre, string cp, int idProvincia)
        {
            this.Nombre = nombre;
            this.CP = cp;
            this.IDProvincia = idProvincia;
        }

        protected override string SQLBasico
        {
            get { return @"select l.*, p.nombre as provincia 
                        from (localidad l inner join provincia p on l.idprovincia=p.id) 
                        order by l.nombre"; }
        }

        public void Nuevo()
        {
            Conectar();

            string sql = @"insert into localidad (nombre, cp, idprovincia) values (@nombre, @cp, @idprovincia)";

            Ejecutar(sql, this);

            Desconectar();
        }

        public void Modificar()
        {
            Conectar();

            string sql = @"update localidad set nombre=@nombre, cp=@cp, idprovincia=@idprovincia where id=@id";

            Ejecutar(sql, this);

            Desconectar();
        }

        public DataSet BuscarPorProvincia(int idProvincia)
        {
            return TraerDataSet("select * from localidad where idprovincia=@idprovincia order by nombre", idProvincia);
        }

        public List<Localidad> BuscarObjetosPorProvincia(int idProvincia)
        {
            return TraerObjetos(@"select l.*, p.nombre as provincia 
                from (localidad l inner join provincia p on l.idprovincia=p.id) 
                where l.idprovincia=@idprovincia order by l.nombre", idProvincia);
        }
        
        public List<Localidad> Buscar(string localidad)
        {
            return TraerObjetos(@"select l.* from localidad l where l.nombre like '" + localidad + @"%' order by l.nombre");
        }

        public List<Localidad> Buscar(string localidad, int idProvincia)
        {
            return TraerObjetos(@"select l.*, p.nombre as provincia 
                from (localidad l inner join provincia p on l.idprovincia=p.id) 
                where l.idprovincia=" + idProvincia + @" and l.nombre like '" + localidad + @"%'
                order by l.nombre");
        }

        public bool Existe(string nombre, int idProvincia)
        {
            DataSet ds = TraerDataSet("select id from localidad where nombre=@nombre and idprovincia=@idprovincia", nombre, idProvincia);
            if (ds.Tables[0].Rows.Count == 0)
                return false;

            return true;
        }
    }
}
